/**
 * @param {number} n
 * @param {number[][]} edges
 * @return {number[][]}
 */
 var getAncestors = function(n, edges) {
  const g = {}
  for(const [f, t] of edges) {
    g[t] = g[t] || []
    g[t].push(f)
  }
  let ans = []
  for(let s = 0; s<n; s++) {
    let now = new Set()
    dfs(s, now)
    ans.push([...now].sort((a,b) => a-b))
  }
  return ans
  function dfs(s, path) {
    if(!g[s]) {
      return
    }
    for(const e of g[s]) {
      if(!path.has(e)) {
        path.add(e)
        dfs(e, path)
      }
    }
  }
};
